//


// 将vue传递过来
import {initState} from "./state";
import {compileToFunction} from "./compile/index";
import {mountComponent} from "./lifecycle";

export function initMixin(Vue) {
    Vue.prototype._init = function (options) {
        const vm = this;
        // 内部传播
        vm.$options = options
        // 初始化
        initState(vm)
        // 挂载
        if (options.el) {
            vm.$mount(options.el)
        }
    }
    // 挂载方法
    Vue.prototype.$mount = function (el) {
        const vm = this;
        el = document.querySelector(el)
        let ops = vm.$options
        if(!ops.render) {
            let template
            if(!ops.template && el) {
                template = el.outerHTML
            }else {
                if(el) {
                    template = ops.template
                }
            }
            if(template && el) {
                // 这里对模板进行编译
                ops.render = compileToFunction(template)
            }
        }
        // ops.render
        mountComponent(vm, el)

    }
}

